// pages/posts/post-detail/post-detail.js
var postsData = require('../../../data/posts-data.js');
// 获取app.js里的数据, 返回一个对象
var app = getApp();

Page({
  data: {
    isPlayingMusic: false
  },

  onLoad: function(option) {
    // option 可以接受到url传递过来的数据
    var postId = option.id;
    // 将传递过来的postId传递到data对象的currentPostId变量中
    this.data.currentPostId = postId;
    // 根据索引获取对应的数据
    var postData = postsData.postsList[postId];
    // 数据绑定 this.data 在122100 版本后已经失效，所以使用this.setData({}) 进行数据绑定
    // this.data.postData = postData;
    this.setData({
      postData: postData
    });

    // 根据键获取缓存数据
    var postsCollected = wx.getStorageSync('posts_collected');
    // 如果缓存里有数据
    if (postsCollected) {
      // 根据postId获取对应的值
      var postCollected = postsCollected[postId];
      if (postCollected) {
        // 将postCollected变量存储的值进行数据绑定到data对象中
        this.setData({
          collected: postCollected
        });
      }
    } else {
      // 没有缓存，则定义一个缓存对象
      var postsCollected = {};
      // 缓存中键默认存储的值为false
      postsCollected[postId] = false;
      // 将缓存对象设置到缓存Storage中
      wx.setStorageSync('posts_collected', postsCollected);
    }

    // 如果全局变量g_isPlayingMusic为true(音乐在播放), 并且全局g_currentMusicPostId为当前播放音乐id
    if (app.globalData.g_isPlayingMusic && app.globalData.g_currentMusicPostId === postId) {
      this.setData({
        isPlayingMusic: true
      });
    }

    // 监听音乐播放的函数
    this.setMusicMonitor();
  },

  setMusicMonitor: function() {
    var that = this;
    // 监听音乐播放事件
    wx.onBackgroundAudioPlay(function() {
      that.setData({
        isPlayingMusic: true
      });
      // 音乐正在播放，全局变量也为true
      app.globalData.g_isPlayingMusic = true;
      // 获取当前播放音乐的id
      app.globalData.g_currentMusicPostId = that.data.currentPostId;
    });

    // 监听音乐暂停事件
    wx.onBackgroundAudioPause(function() {
      that.setData({
        isPlayingMusic: false
      });

      // 音乐暂停，全局变量也为false
      app.globalData.g_isPlayingMusic = false;
      // 音乐暂停, 清空当前播放音乐的id
      app.globalData.g_currentMusicPostId = null;
    });
  },

  onCollectionTap: function(event) {
    // 原则：能用同步用同步，异步容易造成回调地狱的问题
    // 调用同步函数
    // this.getPostsCollectedSyn();
    // 调用异步函数
    this.getPostsCollectedAsync();
  },

  // 同步获取缓存的函数
  getPostsCollectedSyn: function() {
    // 根据键获取缓存数据
    var postsCollected = wx.getStorageSync('posts_collected');
    // 根据当前点击的this.data.currentPostId, 获取对应的值
    var postCollected = postsCollected[this.data.currentPostId];
    // 取反，收藏变成未收藏，未收藏变成收藏
    postCollected = !postCollected;
    postsCollected[this.data.currentPostId] = postCollected;

    this.showToast(postCollected, postsCollected);
    // this.showModal(postCollected, postsCollected);
  },

  // 异步获取缓存的函数
  getPostsCollectedAsync: function() {
    var that = this;
    wx.getStorage({
      key: 'posts_collected',
      success: function(res) {
        // 得到通过键获得的数据
        var postsCollected = res.data;
        // 根据当前点击的this.data.currentPostId, 获取对应的值
        // 在success函数中，this指向发生了改变，指向了success, 解决方案var that = this
        var postCollected = postsCollected[that.data.currentPostId];
        // 取反，收藏变成未收藏，未收藏变成收藏
        postCollected = !postCollected;
        postsCollected[that.data.currentPostId] = postCollected;

        that.showToast(postCollected, postsCollected);
        // that.showModal(postCollected, postsCollected);
      }
    });
  },

  // 自定义函数 showToast
  showToast: function(postCollected, postsCollected) {
    // 获取指向
    var that = this;
    // 更新文章是否的缓存值
    wx.setStorageSync('posts_collected', postsCollected);
    // 更新数据绑定collected变量，从而实现图片的切换
    that.setData({
      collected: postCollected
    });
    // 交互反馈 wx.showToast
    wx.showToast({
      // 第一次点击后为true
      title: postCollected ? '收藏成功' : '取消成功',
      icon: 'success',
      duration: 1000
    });
  },

  // 自定义函数 showModal 对话框
  // showModal: function (postCollected, postsCollected) {
  //   var that = this;
  //   // wx.showModal 显示对话框
  //   wx.showModal({
  //     title: '收藏',
  //     content: postCollected ? '收藏该文章?' : '取消收藏该文章?',
  //     confirmText: '确定',
  //     confirmColor: '#405f80',
  //     showCancel: true,
  //     cancelText: '取消',
  //     cancelColor: '#333',
  //     success: function (res) {
  //       // 如果点击的确定收藏的按钮，则继续执行里面的代码
  //       if (res.confirm) {
  //         // 更新文章是否的缓存值
  //         wx.setStorageSync('posts_collected', postsCollected);
  //         // 先点击完对话框，再进行切换图片
  //         that.setData({
  //           collected: postCollected
  //         });
  //       }
  //     }
  //   });
  // }

  onShareTap: function() {
    var itemList = [
      '分享给微信好友',
      '分享到朋友圈',
      '分享到QQ',
      '分享到微博'
    ];
    wx.showActionSheet({
      itemList: itemList,
      itemColor: '#405f80',
      success: function(res) {
        // res.cancel 用户是否点击了取消按钮 布尔值 怀疑已经没了
        // res.tapIndex 数组元素的索引值，从0开始
        wx.showModal({
          title: '用户' + itemList[res.tapIndex],
          content: '用户是否取消?' + '现在无法实现分享功能。',
        })
      }
    })
  },

  onMusicTap: function(event) {
    // 获取当前点击的id
    var currentPostId = this.data.currentPostId;
    var postData = postsData.postsList[currentPostId];
    var isPlayingMusic = this.data.isPlayingMusic;
    if (isPlayingMusic) {
      // 如果音乐在播放，就暂停，然后设为false
      wx.pauseBackgroundAudio();
      this.setData({
        isPlayingMusic: false
      });
    } else {
      wx.playBackgroundAudio({
        dataUrl: postData.music.url,
        title: postData.music.title,
        coverImgUrl: postData.music.coverImg
      });

      this.setData({
        isPlayingMusic: true
      });
    }

  }

})